local config = require 'symbols-outline.config'

local M = {}

---creates the outline window and sets it up
---@return string bufnr
---@return string bufnr
function M.setup_view()
  -- create a scratch unlisted buffer
  local bufnr = vim.api.nvim_create_buf(false, true)

  -- delete buffer when window is closed / buffer is hidden
  vim.api.nvim_buf_set_option(bufnr, 'bufhidden', 'delete')
  -- create a split
  vim.cmd(config.get_split_command())
  -- resize to a % of the current window size
  vim.cmd('vertical resize ' .. config.get_window_width())

  -- get current (outline) window and attach our buffer to it
  local winnr = vim.api.nvim_get_current_win()
  vim.api.nvim_win_set_buf(winnr, bufnr)

  -- window stuff
  vim.api.nvim_win_set_option(winnr, 'number', false)
  vim.api.nvim_win_set_option(winnr, 'relativenumber', false)
  vim.api.nvim_win_set_option(winnr, 'winfixwidth', true)
  -- buffer stuff
  vim.api.nvim_buf_set_name(bufnr, 'OUTLINE')
  vim.api.nvim_buf_set_option(bufnr, 'filetype', 'Outline')
  vim.api.nvim_buf_set_option(bufnr, 'modifiable', false)

  if config.options.show_numbers or config.options.show_relative_numbers then
    vim.api.nvim_win_set_option(winnr, 'nu', true)
  end

  if config.options.show_relative_numbers then
    vim.api.nvim_win_set_option(winnr, 'rnu', true)
  end

  return bufnr, winnr
end

return M
